import java.io.File;

/**
 * @ClassName copyDirectorFiles
 * @Author Alex2
 * @Date 2025/3/6 17:19
 * @Description 将一个文件夹中的文件复制到另一个文件夹
 **/
public class copyDirectorFiles {
    public static void main(String[] args) {
        File sourceDir = new File("C:/Users/Alex2/Desktop/source");
        File targetDir = new File("C:/Users/Alex2/Desktop/target");

        if (copyDirectory(sourceDir, targetDir)) {
            System.out.println("目录复制完成：" + targetDir.getAbsolutePath());
        } else {
            System.out.println("目录复制失败！");
        }
    }

    public static boolean copyDirectory(File sourceDir, File targetDir) {
        if (!sourceDir.exists() || !sourceDir.isDirectory()) {
            System.out.println("源目录不存在或者不是目录：" + sourceDir.getAbsolutePath());
            return false;
        }
        // 目标文件夹不存在，创建目录
        if (!targetDir.exists()) {
            copySingleFile.mkdir(targetDir);
        }
        File[] files = sourceDir.listFiles();       // 获取当前该路径下所有内容
        if (files == null || files.length == 0) {
            System.out.println("无法访问源目录或源目录为空");
            return false;
        }
        for (File file : files) {
            File newTarget = new File(targetDir, file.getName());
            if (file.isDirectory()) {
                copyDirectory(file, newTarget); // 递归复制子目录
            } else {
                copyFile(file, newTarget); // 复制文件
            }
        }
        return true;
    }

    public static void copyFile(File sourceFile, File targetFile) {
        copySingleFile.copyFile(sourceFile, targetFile);
    }
}